Enter the directory of the maca folder on your drive and the name of the tissue you want to analyze.

tissue_of_interest = "Colon"

Load the requisite packages and some additional helper functions.

library(here)
library(useful)
library(Seurat)
library(dplyr)
library(Matrix)
save_dir = here('00_data_ingest', 'tissue_robj')
# read the metadata to get the plates we want
plate_metadata_filename = here('00_data_ingest', 'facs_raw_data', 'metadata_FACS.csv')
plate_metadata <- read.csv(plate_metadata_filename, sep=",", header = TRUE)
colnames(plate_metadata)[1] <- "plate.barcode"
plate_metadata

Subset the metadata on the tissue.

tissue_plates = filter(plate_metadata, tissue == tissue_of_interest)[,c('plate.barcode','tissue','subtissue','mouse.sex')]
tissue_plates

Load the read count data.

#Load the gene names and set the metadata columns by opening the first file
filename = here('00_data_ingest', 'facs_raw_data', 'FACS', paste0(tissue_of_interest, '-counts.csv'))
raw.data = read.csv(filename, sep=",", row.names=1)
# raw.data = data.frame(row.names = rownames(raw.data))
corner(raw.data)

Make a vector of plate barcodes for each cell

plate.barcodes = lapply(colnames(raw.data), function(x) strsplit(strsplit(x, "_")[[1]][1], '.', fixed=TRUE)[[1]][2])
head(plate.barcodes)
[[1]]
[1] "MAA001871"

[[2]]
[1] "MAA001871"

[[3]]
[1] "MAA001871"

[[4]]
[1] "MAA001871"

[[5]]
[1] "MAA001871"

[[6]]
[1] "MAA001871"

Use only the metadata rows corresponding to Bladder plates. Make a plate barcode dataframe to “expand” the per-plate metadata to be per-cell.

head(raw.data)
barcode.df = t.data.frame(as.data.frame(plate.barcodes))
rownames(barcode.df) = colnames(raw.data)
colnames(barcode.df) = c('plate.barcode')
head(barcode.df)
                         plate.barcode
F11.MAA001871.3_39_F.1.1 "MAA001871"  
G16.MAA001871.3_39_F.1.1 "MAA001871"  
I1.MAA001871.3_39_F.1.1  "MAA001871"  
A13.MAA001871.3_39_F.1.1 "MAA001871"  
B16.MAA001871.3_39_F.1.1 "MAA001871"  
C18.MAA001871.3_39_F.1.1 "MAA001871"  
rnames = row.names(barcode.df)
meta.data <- merge(barcode.df, plate_metadata, by='plate.barcode', sort = F)
row.names(meta.data) <- rnames
# Sort by plate barcode because that's how the data was originally
meta.data = meta.data[order(meta.data$plate.barcode), ]
raw.data = raw.data[, rownames(meta.data)]
head(raw.data)

Process the raw data and load it into the Seurat object.

# Find ERCC's, compute the percent ERCC, and drop them from the raw data.
erccs <- grep(pattern = "^ERCC-", x = rownames(x = raw.data), value = TRUE)
percent.ercc <- Matrix::colSums(raw.data[erccs, ])/Matrix::colSums(raw.data)
ercc.index <- grep(pattern = "^ERCC-", x = rownames(x = raw.data), value = FALSE)
raw.data <- raw.data[-ercc.index,]
# Create the Seurat object with all the data
tiss <- CreateSeuratObject(raw.data = raw.data, project = tissue_of_interest, 
                    min.cells = 5, min.genes = 5)
tiss <- AddMetaData(object = tiss, meta.data)
tiss <- AddMetaData(object = tiss, percent.ercc, col.name = "percent.ercc")
# Change default name for sums of counts from nUMI to nReads
colnames(tiss@meta.data)[colnames(tiss@meta.data) == 'nUMI'] <- 'nReads'
# Create metadata columns for annotations and subannotations
tiss@meta.data[,'annotation'] <- NA
tiss@meta.data[,'subannotation'] <- NA

Calculate percent ribosomal genes.

ribo.genes <- grep(pattern = "^Rp[sl][[:digit:]]", x = rownames(x = tiss@data), value = TRUE)
percent.ribo <- Matrix::colSums(tiss@raw.data[ribo.genes, ])/Matrix::colSums(tiss@raw.data)
tiss <- AddMetaData(object = tiss, metadata = percent.ribo, col.name = "percent.ribo")

A sanity check: genes per cell vs reads per cell.

GenePlot(object = tiss, gene1 = "nReads", gene2 = "nGene", use.raw=T)

Filter out cells with few reads and few genes.

tiss <- FilterCells(object = tiss, subset.names = c("nGene", "nReads"), 
    low.thresholds = c(500, 50000), high.thresholds = c(25000, 2000000))

Normalize the data, then regress out correlation with total reads

tiss <- NormalizeData(object = tiss)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|

Run Principal Component Analysis.

tiss <- RunPCA(object = tiss, do.print = FALSE)
tiss <- ProjectPCA(object = tiss, do.print = FALSE)

Later on (in FindClusters and TSNE) you will pick a number of principal components to use. This has the effect of keeping the major directions of variation in the data and, ideally, supressing noise. There is no correct answer to the number to use, but a decent rule of thumb is to go until the plot plateaus.

PCElbowPlot(object = tiss)

Choose the number of principal components to use.

# Set number of principal components. 
n.pcs = 20

The clustering is performed based on a nearest neighbors graph. Cells that have similar expression will be joined together. The Louvain algorithm looks for groups of cells with high modularity–more connections within the group than between groups. The resolution parameter determines the scale…higher resolution will give more clusters, lower resolution will give fewer.

For the top-level clustering, aim to under-cluster instead of over-cluster. It will be easy to subset groups and further analyze them below.

# Set resolution 
res.used <- 0.5
tiss <- FindClusters(object = tiss, reduction.type = "pca", dims.use = 1:n.pcs, 
    resolution = res.used, print.output = 0, save.SNN = TRUE)

To visualize

# If cells are too spread out, you can raise the perplexity. If you have few cells, try a lower perplexity (but never less than 10).
tiss <- RunTSNE(object = tiss, dims.use = 1:n.pcs, seed.use = 10, perplexity=30)
# note that you can set do.label=T to help label individual clusters
TSNEPlot(object = tiss, do.label = T)

Check expression of genes of interset.

#{r, echo=FALSE, fig.height=16, fig.width=12}
genes_to_check = c('Lgr5', 'Krt20', 'Atoh1', 'Chga', 'Dclk1', 'Mki67')
#genes_to_check = c('Alb', 'Cyp2f2', 'Cyp2e1', 'Hamp')
#FeaturePlot(tiss, genes_to_check, pt.size = 1, nCol = 3)
FeaturePlot(tiss, genes_to_check, pt.size = 1)

Dotplots let you see the intensity of exppression and the fraction of cells expressing for each of your genes of interest.

# To change the y-axis to show raw counts, add use.raw = T.
VlnPlot(tiss, genes_to_check)

# To change the y-axis to show raw counts, add use.raw = T.
VlnPlot(tiss, 'Lgr5')

# To get plots of two genes, add use.raw = T.
GenePlot(tiss, 'Krt20', 'Atoh1')

How big are the clusters?

table(tiss@ident)

  0   1   2   3   4   5   6   7   8   9  10  11  12 
988 664 583 231 220 220 200 153 143 133 132  55  25 

Which markers identify a specific cluster?

clust.markers <- FindMarkers(object = tiss, ident.1 = 0, only.pos = TRUE, min.pct = 0.25, thresh.use = 0.25)

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 44s      
   |+                                                 | 2 % ~02m 36s      
   |++                                                | 3 % ~02m 33s      
   |++                                                | 4 % ~02m 32s      
   |+++                                               | 5 % ~02m 30s      
   |+++                                               | 6 % ~02m 30s      
   |++++                                              | 7 % ~02m 27s      
   |++++                                              | 8 % ~02m 25s      
   |+++++                                             | 9 % ~02m 22s      
   |+++++                                             | 10% ~02m 21s      
   |++++++                                            | 11% ~02m 19s      
   |++++++                                            | 12% ~02m 18s      
   |+++++++                                           | 13% ~02m 16s      
   |+++++++                                           | 14% ~02m 14s      
   |++++++++                                          | 15% ~02m 13s      
   |++++++++                                          | 16% ~02m 11s      
   |+++++++++                                         | 17% ~02m 09s      
   |+++++++++                                         | 18% ~02m 08s      
   |++++++++++                                        | 19% ~02m 06s      
   |++++++++++                                        | 20% ~02m 08s      
   |+++++++++++                                       | 21% ~02m 06s      
   |+++++++++++                                       | 22% ~02m 04s      
   |++++++++++++                                      | 23% ~02m 02s      
   |++++++++++++                                      | 24% ~02m 01s      
   |+++++++++++++                                     | 25% ~02m 01s      
   |+++++++++++++                                     | 26% ~01m 59s      
   |++++++++++++++                                    | 27% ~01m 57s      
   |++++++++++++++                                    | 28% ~01m 55s      
   |+++++++++++++++                                   | 29% ~01m 53s      
   |+++++++++++++++                                   | 30% ~01m 52s      
   |++++++++++++++++                                  | 31% ~01m 50s      
   |++++++++++++++++                                  | 32% ~01m 48s      
   |+++++++++++++++++                                 | 33% ~01m 47s      
   |+++++++++++++++++                                | 34% ~01m 46s      
   |++++++++++++++++++                                | 35% ~01m 45s      
   |++++++++++++++++++                                | 36% ~01m 44s      
   |+++++++++++++++++++                               | 37% ~01m 42s      
   |+++++++++++++++++++                               | 38% ~01m 41s      
   |++++++++++++++++++++                              | 39% ~01m 39s      
   |++++++++++++++++++++                              | 40% ~01m 37s      
   |+++++++++++++++++++++                             | 41% ~01m 36s      
   |+++++++++++++++++++++                             | 42% ~01m 34s      
   |++++++++++++++++++++++                            | 43% ~01m 32s      
   |++++++++++++++++++++++                            | 44% ~01m 31s      
   |+++++++++++++++++++++++                           | 45% ~01m 29s      
   |+++++++++++++++++++++++                           | 46% ~01m 27s      
   |++++++++++++++++++++++++                          | 47% ~01m 26s      
   |++++++++++++++++++++++++                          | 48% ~01m 24s      
   |+++++++++++++++++++++++++                         | 49% ~01m 22s      
   |+++++++++++++++++++++++++                         | 50% ~01m 21s      
   |++++++++++++++++++++++++++                        | 51% ~01m 19s      
   |++++++++++++++++++++++++++                        | 52% ~01m 17s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 16s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 14s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 12s      
   |++++++++++++++++++++++++++++                     | 56% ~01m 11s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 09s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 08s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 06s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 04s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 03s      
   |+++++++++++++++++++++++++++++++                   | 62% ~01m 01s      
   |++++++++++++++++++++++++++++++++                  | 63% ~59s          
   |++++++++++++++++++++++++++++++++                  | 64% ~58s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~56s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~54s          
   |++++++++++++++++++++++++++++++++++                | 67% ~53s          
   |++++++++++++++++++++++++++++++++++               | 68% ~51s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~50s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~48s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~46s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~45s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~43s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~42s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~40s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~38s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~37s          
   |+++++++++++++++++++++++++++++++++++++++          | 78% ~35s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~34s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~32s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~30s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~29s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~27s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~26s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~24s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~22s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~21s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++++    | 90% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 39s
print(x = head(x= clust.markers, n = 10))

You can also compute all markers for all clusters at once. This may take some time.

tiss.markers <- FindAllMarkers(object = tiss, only.pos = TRUE, min.pct = 0.25, thresh.use = 0.25)

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 23s      
   |++                                                | 2 % ~03m 10s      
   |++                                                | 3 % ~02m 54s      
   |+++                                               | 4 % ~02m 46s      
   |+++                                               | 5 % ~02m 40s      
   |++++                                              | 6 % ~02m 36s      
   |++++                                              | 7 % ~02m 33s      
   |+++++                                             | 8 % ~02m 31s      
   |+++++                                             | 9 % ~02m 28s      
   |++++++                                            | 10% ~02m 26s      
   |++++++                                            | 11% ~02m 24s      
   |+++++++                                           | 12% ~02m 22s      
   |+++++++                                           | 13% ~02m 20s      
   |++++++++                                          | 14% ~02m 18s      
   |++++++++                                          | 15% ~02m 15s      
   |+++++++++                                         | 16% ~02m 14s      
   |+++++++++                                         | 17% ~02m 12s      
   |++++++++++                                        | 18% ~02m 15s      
   |++++++++++                                        | 19% ~02m 13s      
   |+++++++++++                                       | 20% ~02m 11s      
   |+++++++++++                                       | 21% ~02m 09s      
   |++++++++++++                                      | 22% ~02m 07s      
   |++++++++++++                                      | 23% ~02m 05s      
   |+++++++++++++                                     | 24% ~02m 03s      
   |+++++++++++++                                     | 26% ~02m 01s      
   |++++++++++++++                                    | 27% ~01m 59s      
   |++++++++++++++                                    | 28% ~01m 58s      
   |+++++++++++++++                                   | 29% ~01m 56s      
   |+++++++++++++++                                   | 30% ~01m 54s      
   |++++++++++++++++                                  | 31% ~01m 53s      
   |++++++++++++++++                                  | 32% ~01m 51s      
   |+++++++++++++++++                                 | 33% ~01m 52s      
   |+++++++++++++++++                                 | 34% ~01m 50s      
   |++++++++++++++++++                                | 35% ~01m 48s      
   |++++++++++++++++++                                | 36% ~01m 48s      
   |+++++++++++++++++++                               | 37% ~01m 46s      
   |+++++++++++++++++++                               | 38% ~01m 44s      
   |++++++++++++++++++++                              | 39% ~01m 42s      
   |++++++++++++++++++++                              | 40% ~01m 41s      
   |+++++++++++++++++++++                             | 41% ~01m 39s      
   |+++++++++++++++++++++                             | 42% ~01m 37s      
   |++++++++++++++++++++++                            | 43% ~01m 36s      
   |++++++++++++++++++++++                            | 44% ~01m 34s      
   |+++++++++++++++++++++++                           | 45% ~01m 33s      
   |+++++++++++++++++++++++                           | 46% ~01m 31s      
   |++++++++++++++++++++++++                          | 47% ~01m 29s      
   |++++++++++++++++++++++++                          | 48% ~01m 27s      
   |+++++++++++++++++++++++++                         | 49% ~01m 26s      
   |+++++++++++++++++++++++++                         | 50% ~01m 24s      
   |++++++++++++++++++++++++++                        | 51% ~01m 23s      
   |+++++++++++++++++++++++++++                       | 52% ~01m 21s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 19s      
   |++++++++++++++++++++++++++++                      | 54% ~01m 18s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 16s      
   |+++++++++++++++++++++++++++++                     | 56% ~01m 14s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 12s      
   |++++++++++++++++++++++++++++++                    | 58% ~01m 10s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 08s      
   |+++++++++++++++++++++++++++++++                   | 60% ~01m 07s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 05s      
   |++++++++++++++++++++++++++++++++                  | 62% ~01m 04s      
   |++++++++++++++++++++++++++++++++                  | 63% ~01m 02s      
   |+++++++++++++++++++++++++++++++++                 | 64% ~01m 00s      
   |+++++++++++++++++++++++++++++++++                 | 65% ~58s          
   |++++++++++++++++++++++++++++++++++                | 66% ~56s          
   |++++++++++++++++++++++++++++++++++                | 67% ~55s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~53s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~51s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~49s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~48s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~46s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~44s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~42s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~41s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~39s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~37s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~36s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~34s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~32s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~31s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~29s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~27s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~24s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~22s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~17s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 45s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 39s      
   |++                                                | 2 % ~01m 42s      
   |++                                                | 3 % ~01m 38s      
   |+++                                               | 4 % ~01m 37s      
   |+++                                               | 5 % ~01m 35s      
   |++++                                              | 6 % ~01m 45s      
   |++++                                              | 7 % ~01m 43s      
   |+++++                                             | 8 % ~01m 40s      
   |+++++                                             | 9 % ~01m 38s      
   |++++++                                            | 10% ~01m 37s      
   |++++++                                            | 11% ~01m 35s      
   |+++++++                                           | 12% ~01m 38s      
   |+++++++                                           | 14% ~01m 36s      
   |++++++++                                          | 15% ~01m 34s      
   |++++++++                                          | 16% ~01m 33s      
   |+++++++++                                         | 17% ~01m 31s      
   |+++++++++                                         | 18% ~01m 30s      
   |++++++++++                                        | 19% ~01m 31s      
   |++++++++++                                        | 20% ~01m 30s      
   |+++++++++++                                       | 21% ~01m 28s      
   |+++++++++++                                       | 22% ~01m 27s      
   |++++++++++++                                      | 23% ~01m 25s      
   |++++++++++++                                      | 24% ~01m 24s      
   |+++++++++++++                                     | 25% ~01m 22s      
   |++++++++++++++                                    | 26% ~01m 21s      
   |++++++++++++++                                    | 27% ~01m 19s      
   |+++++++++++++++                                   | 28% ~01m 18s      
   |+++++++++++++++                                   | 29% ~01m 16s      
   |++++++++++++++++                                  | 30% ~01m 15s      
   |++++++++++++++++                                  | 31% ~01m 15s      
   |+++++++++++++++++                                 | 32% ~01m 14s      
   |+++++++++++++++++                                 | 33% ~01m 13s      
   |++++++++++++++++++                                | 34% ~01m 11s      
   |++++++++++++++++++                                | 35% ~01m 10s      
   |+++++++++++++++++++                               | 36% ~01m 09s      
   |+++++++++++++++++++                               | 38% ~01m 08s      
   |++++++++++++++++++++                              | 39% ~01m 06s      
   |++++++++++++++++++++                              | 40% ~01m 05s      
   |+++++++++++++++++++++                             | 41% ~01m 04s      
   |+++++++++++++++++++++                             | 42% ~01m 03s      
   |++++++++++++++++++++++                            | 43% ~01m 01s      
   |++++++++++++++++++++++                            | 44% ~01m 00s      
   |+++++++++++++++++++++++                           | 45% ~59s          
   |+++++++++++++++++++++++                           | 46% ~59s          
   |++++++++++++++++++++++++                          | 47% ~57s          
   |++++++++++++++++++++++++                          | 48% ~56s          
   |+++++++++++++++++++++++++                         | 49% ~55s          
   |+++++++++++++++++++++++++                         | 50% ~54s          
   |++++++++++++++++++++++++++                        | 51% ~53s          
   |+++++++++++++++++++++++++++                       | 52% ~51s          
   |+++++++++++++++++++++++++++                       | 53% ~50s          
   |++++++++++++++++++++++++++++                      | 54% ~49s          
   |++++++++++++++++++++++++++++                      | 55% ~48s          
   |+++++++++++++++++++++++++++++                     | 56% ~47s          
   |+++++++++++++++++++++++++++++                     | 57% ~46s          
   |++++++++++++++++++++++++++++++                    | 58% ~45s          
   |++++++++++++++++++++++++++++++                    | 59% ~43s          
   |+++++++++++++++++++++++++++++++                   | 60% ~42s          
   |+++++++++++++++++++++++++++++++                   | 61% ~41s          
   |++++++++++++++++++++++++++++++++                  | 62% ~40s          
   |++++++++++++++++++++++++++++++++                  | 64% ~39s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~38s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~36s          
   |++++++++++++++++++++++++++++++++++                | 67% ~35s          
   |++++++++++++++++++++++++++++++++++                | 68% ~34s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~33s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~32s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~31s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~29s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~28s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~27s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~26s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~25s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~24s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~23s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~22s          
   |+++++++++++++++++++++++++++++++++++++++++         | 80% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 46s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 01s      
   |+                                                 | 2 % ~01m 59s      
   |++                                                | 3 % ~01m 59s      
   |++                                                | 4 % ~02m 01s      
   |+++                                               | 5 % ~01m 59s      
   |+++                                               | 6 % ~01m 58s      
   |++++                                              | 7 % ~01m 57s      
   |++++                                              | 8 % ~01m 55s      
   |+++++                                             | 9 % ~01m 54s      
   |+++++                                             | 10% ~01m 52s      
   |++++++                                            | 11% ~01m 50s      
   |++++++                                            | 12% ~01m 49s      
   |+++++++                                           | 13% ~01m 48s      
   |+++++++                                           | 14% ~01m 46s      
   |++++++++                                          | 15% ~01m 45s      
   |++++++++                                          | 16% ~01m 44s      
   |+++++++++                                         | 17% ~01m 43s      
   |+++++++++                                         | 18% ~01m 42s      
   |++++++++++                                        | 19% ~01m 43s      
   |++++++++++                                        | 20% ~01m 43s      
   |+++++++++++                                       | 21% ~01m 42s      
   |+++++++++++                                       | 22% ~01m 41s      
   |++++++++++++                                      | 23% ~01m 40s      
   |++++++++++++                                      | 24% ~01m 38s      
   |+++++++++++++                                     | 25% ~01m 37s      
   |+++++++++++++                                     | 26% ~01m 36s      
   |++++++++++++++                                    | 27% ~01m 34s      
   |++++++++++++++                                    | 28% ~01m 33s      
   |+++++++++++++++                                   | 29% ~01m 32s      
   |+++++++++++++++                                   | 30% ~01m 30s      
   |++++++++++++++++                                  | 31% ~01m 30s      
   |++++++++++++++++                                  | 32% ~01m 29s      
   |+++++++++++++++++                                 | 33% ~01m 28s      
   |+++++++++++++++++                                | 34% ~01m 26s      
   |++++++++++++++++++                                | 35% ~01m 25s      
   |++++++++++++++++++                                | 36% ~01m 23s      
   |+++++++++++++++++++                               | 37% ~01m 21s      
   |+++++++++++++++++++                               | 38% ~01m 20s      
   |++++++++++++++++++++                              | 39% ~01m 19s      
   |++++++++++++++++++++                              | 40% ~01m 18s      
   |+++++++++++++++++++++                             | 41% ~01m 17s      
   |+++++++++++++++++++++                             | 42% ~01m 15s      
   |++++++++++++++++++++++                            | 43% ~01m 14s      
   |++++++++++++++++++++++                            | 44% ~01m 13s      
   |+++++++++++++++++++++++                           | 45% ~01m 11s      
   |+++++++++++++++++++++++                           | 46% ~01m 10s      
   |++++++++++++++++++++++++                          | 47% ~01m 09s      
   |++++++++++++++++++++++++                          | 48% ~01m 08s      
   |+++++++++++++++++++++++++                         | 49% ~01m 07s      
   |+++++++++++++++++++++++++                         | 50% ~01m 05s      
   |++++++++++++++++++++++++++                        | 51% ~01m 04s      
   |++++++++++++++++++++++++++                        | 52% ~01m 02s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 01s      
   |+++++++++++++++++++++++++++                       | 54% ~60s          
   |++++++++++++++++++++++++++++                      | 55% ~58s          
   |++++++++++++++++++++++++++++                     | 56% ~57s          
   |+++++++++++++++++++++++++++++                     | 57% ~56s          
   |+++++++++++++++++++++++++++++                     | 58% ~55s          
   |++++++++++++++++++++++++++++++                    | 59% ~53s          
   |++++++++++++++++++++++++++++++                    | 60% ~52s          
   |+++++++++++++++++++++++++++++++                   | 61% ~51s          
   |+++++++++++++++++++++++++++++++                   | 62% ~49s          
   |++++++++++++++++++++++++++++++++                  | 63% ~48s          
   |++++++++++++++++++++++++++++++++                  | 64% ~47s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~45s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~44s          
   |++++++++++++++++++++++++++++++++++                | 67% ~43s          
   |++++++++++++++++++++++++++++++++++               | 68% ~42s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~40s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~39s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~38s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~36s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~35s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~34s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~33s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~31s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~30s          
   |+++++++++++++++++++++++++++++++++++++++          | 78% ~29s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~27s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~26s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~23s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~22s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~17s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++    | 90% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 09s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~58s          
   |++                                                | 2 % ~56s          
   |++                                                | 3 % ~56s          
   |+++                                               | 4 % ~57s          
   |+++                                               | 5 % ~57s          
   |++++                                              | 6 % ~57s          
   |++++                                              | 7 % ~57s          
   |+++++                                             | 8 % ~57s          
   |+++++                                             | 9 % ~56s          
   |++++++                                            | 11% ~56s          
   |++++++                                            | 12% ~55s          
   |+++++++                                           | 13% ~55s          
   |+++++++                                           | 14% ~54s          
   |++++++++                                          | 15% ~53s          
   |++++++++                                          | 16% ~52s          
   |+++++++++                                         | 17% ~51s          
   |+++++++++                                         | 18% ~51s          
   |++++++++++                                        | 19% ~50s          
   |++++++++++                                        | 20% ~49s          
   |+++++++++++                                       | 21% ~48s          
   |++++++++++++                                      | 22% ~48s          
   |++++++++++++                                      | 23% ~48s          
   |+++++++++++++                                     | 24% ~47s          
   |+++++++++++++                                     | 25% ~46s          
   |++++++++++++++                                    | 26% ~46s          
   |++++++++++++++                                    | 27% ~45s          
   |+++++++++++++++                                   | 28% ~44s          
   |+++++++++++++++                                   | 29% ~43s          
   |++++++++++++++++                                  | 31% ~43s          
   |++++++++++++++++                                  | 32% ~42s          
   |+++++++++++++++++                                 | 33% ~42s          
   |+++++++++++++++++                                 | 34% ~41s          
   |++++++++++++++++++                                | 35% ~40s          
   |++++++++++++++++++                                | 36% ~40s          
   |+++++++++++++++++++                               | 37% ~39s          
   |+++++++++++++++++++                               | 38% ~38s          
   |++++++++++++++++++++                              | 39% ~38s          
   |++++++++++++++++++++                              | 40% ~37s          
   |+++++++++++++++++++++                             | 41% ~36s          
   |++++++++++++++++++++++                            | 42% ~36s          
   |++++++++++++++++++++++                            | 43% ~35s          
   |+++++++++++++++++++++++                           | 44% ~34s          
   |+++++++++++++++++++++++                           | 45% ~34s          
   |++++++++++++++++++++++++                          | 46% ~33s          
   |++++++++++++++++++++++++                          | 47% ~32s          
   |+++++++++++++++++++++++++                         | 48% ~32s          
   |+++++++++++++++++++++++++                         | 49% ~31s          
   |++++++++++++++++++++++++++                        | 51% ~30s          
   |++++++++++++++++++++++++++                        | 52% ~30s          
   |+++++++++++++++++++++++++++                       | 53% ~29s          
   |+++++++++++++++++++++++++++                       | 54% ~28s          
   |++++++++++++++++++++++++++++                      | 55% ~28s          
   |++++++++++++++++++++++++++++                      | 56% ~27s          
   |+++++++++++++++++++++++++++++                     | 57% ~27s          
   |+++++++++++++++++++++++++++++                     | 58% ~26s          
   |++++++++++++++++++++++++++++++                    | 59% ~25s          
   |++++++++++++++++++++++++++++++                    | 60% ~25s          
   |+++++++++++++++++++++++++++++++                   | 61% ~24s          
   |++++++++++++++++++++++++++++++++                  | 62% ~23s          
   |++++++++++++++++++++++++++++++++                  | 63% ~23s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~22s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~22s          
   |++++++++++++++++++++++++++++++++++                | 66% ~21s          
   |++++++++++++++++++++++++++++++++++                | 67% ~20s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~20s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~19s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~18s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~18s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~17s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~16s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~16s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~15s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~14s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~14s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~13s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~02s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 03s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 46s      
   |++                                                | 2 % ~01m 48s      
   |++                                                | 3 % ~01m 47s      
   |+++                                               | 4 % ~01m 46s      
   |+++                                               | 5 % ~01m 45s      
   |++++                                              | 6 % ~01m 43s      
   |++++                                              | 7 % ~01m 42s      
   |+++++                                             | 8 % ~01m 40s      
   |+++++                                             | 9 % ~01m 39s      
   |++++++                                            | 10% ~01m 38s      
   |++++++                                            | 11% ~01m 37s      
   |+++++++                                           | 12% ~01m 37s      
   |+++++++                                           | 13% ~01m 36s      
   |++++++++                                          | 14% ~01m 35s      
   |++++++++                                          | 15% ~01m 33s      
   |+++++++++                                         | 16% ~01m 32s      
   |+++++++++                                         | 17% ~01m 31s      
   |++++++++++                                        | 18% ~01m 30s      
   |++++++++++                                        | 19% ~01m 29s      
   |+++++++++++                                       | 20% ~01m 28s      
   |+++++++++++                                       | 21% ~01m 26s      
   |++++++++++++                                      | 22% ~01m 25s      
   |++++++++++++                                      | 23% ~01m 24s      
   |+++++++++++++                                     | 24% ~01m 23s      
   |+++++++++++++                                     | 25% ~01m 22s      
   |++++++++++++++                                    | 26% ~01m 21s      
   |++++++++++++++                                    | 27% ~01m 20s      
   |+++++++++++++++                                   | 28% ~01m 19s      
   |+++++++++++++++                                   | 29% ~01m 17s      
   |++++++++++++++++                                  | 30% ~01m 16s      
   |++++++++++++++++                                  | 31% ~01m 15s      
   |+++++++++++++++++                                 | 32% ~01m 14s      
   |+++++++++++++++++                                 | 33% ~01m 13s      
   |++++++++++++++++++                                | 34% ~01m 12s      
   |++++++++++++++++++                                | 35% ~01m 11s      
   |+++++++++++++++++++                               | 36% ~01m 09s      
   |+++++++++++++++++++                               | 37% ~01m 08s      
   |++++++++++++++++++++                              | 38% ~01m 07s      
   |++++++++++++++++++++                              | 39% ~01m 06s      
   |+++++++++++++++++++++                             | 40% ~01m 05s      
   |+++++++++++++++++++++                             | 41% ~01m 04s      
   |++++++++++++++++++++++                            | 42% ~01m 03s      
   |++++++++++++++++++++++                            | 43% ~01m 02s      
   |+++++++++++++++++++++++                           | 44% ~01m 00s      
   |+++++++++++++++++++++++                           | 45% ~59s          
   |++++++++++++++++++++++++                          | 46% ~58s          
   |++++++++++++++++++++++++                          | 47% ~57s          
   |+++++++++++++++++++++++++                         | 48% ~56s          
   |+++++++++++++++++++++++++                         | 49% ~55s          
   |++++++++++++++++++++++++++                        | 51% ~54s          
   |++++++++++++++++++++++++++                        | 52% ~53s          
   |+++++++++++++++++++++++++++                       | 53% ~52s          
   |+++++++++++++++++++++++++++                       | 54% ~51s          
   |++++++++++++++++++++++++++++                      | 55% ~49s          
   |++++++++++++++++++++++++++++                      | 56% ~48s          
   |+++++++++++++++++++++++++++++                     | 57% ~47s          
   |+++++++++++++++++++++++++++++                     | 58% ~46s          
   |++++++++++++++++++++++++++++++                    | 59% ~45s          
   |++++++++++++++++++++++++++++++                    | 60% ~44s          
   |+++++++++++++++++++++++++++++++                   | 61% ~43s          
   |+++++++++++++++++++++++++++++++                   | 62% ~42s          
   |++++++++++++++++++++++++++++++++                  | 63% ~41s          
   |++++++++++++++++++++++++++++++++                  | 64% ~40s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~39s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~37s          
   |++++++++++++++++++++++++++++++++++                | 67% ~36s          
   |++++++++++++++++++++++++++++++++++                | 68% ~35s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~34s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~33s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~32s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~31s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~30s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~29s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~27s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~26s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~25s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~24s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~23s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~22s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 50s

   |                                                  | 0 % ~calculating  
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+                                                 | 1 % ~02m 02s      
   |++                                                | 2 % ~01m 49s      
   |++                                                | 3 % ~01m 49s      
   |+++                                               | 4 % ~01m 45s      
   |+++                                               | 5 % ~01m 42s      
   |++++                                              | 6 % ~01m 39s      
   |++++                                              | 7 % ~01m 36s      
   |+++++                                             | 8 % ~01m 35s      
   |+++++                                             | 9 % ~01m 34s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++                                            | 11% ~01m 33s      
   |++++++                                            | 12% ~01m 31s      
   |+++++++                                           | 13% ~01m 28s      
   |+++++++                                           | 14% ~01m 27s      
   |++++++++                                          | 15% ~01m 25s      
   |++++++++                                          | 16% ~01m 24s      
   |+++++++++                                         | 17% ~01m 22s      
   |+++++++++                                         | 18% ~01m 21s      
   |++++++++++                                        | 19% ~01m 19s      
   |++++++++++                                        | 20% ~01m 17s      
   |+++++++++++                                       | 21% ~01m 16s      
   |++++++++++++                                      | 22% ~01m 14s      
   |++++++++++++                                      | 23% ~01m 12s      
   |+++++++++++++                                     | 24% ~01m 11s      
   |+++++++++++++                                     | 25% ~01m 09s      
   |++++++++++++++                                    | 26% ~01m 08s      
   |++++++++++++++                                    | 27% ~01m 07s      
   |+++++++++++++++                                   | 28% ~01m 05s      
   |+++++++++++++++                                   | 29% ~01m 04s      
   |++++++++++++++++                                  | 31% ~01m 03s      
   |++++++++++++++++                                  | 32% ~01m 02s      
   |+++++++++++++++++                                 | 33% ~01m 01s      
   |+++++++++++++++++                                 | 34% ~01m 00s      
   |++++++++++++++++++                                | 35% ~59s          
   |++++++++++++++++++                                | 36% ~58s          
   |+++++++++++++++++++                               | 37% ~57s          
   |+++++++++++++++++++                               | 38% ~56s          
   |++++++++++++++++++++                              | 39% ~55s          
   |++++++++++++++++++++                              | 40% ~54s          
   |+++++++++++++++++++++                             | 41% ~53s          
   |++++++++++++++++++++++                            | 42% ~52s          
   |++++++++++++++++++++++                            | 43% ~51s          
   |+++++++++++++++++++++++                           | 44% ~50s          
   |+++++++++++++++++++++++                           | 45% ~49s          
   |++++++++++++++++++++++++                          | 46% ~48s          
   |++++++++++++++++++++++++                          | 47% ~47s          
   |+++++++++++++++++++++++++                         | 48% ~46s          
   |+++++++++++++++++++++++++                         | 49% ~45s          
   |++++++++++++++++++++++++++                        | 51% ~44s          
   |++++++++++++++++++++++++++                        | 52% ~42s          
   |+++++++++++++++++++++++++++                       | 53% ~41s          
   |+++++++++++++++++++++++++++                       | 54% ~40s          
   |++++++++++++++++++++++++++++                      | 55% ~39s          
   |++++++++++++++++++++++++++++                      | 56% ~38s          
   |+++++++++++++++++++++++++++++                     | 57% ~37s          
   |+++++++++++++++++++++++++++++                     | 58% ~36s          
   |++++++++++++++++++++++++++++++                    | 59% ~35s          
   |++++++++++++++++++++++++++++++                    | 60% ~34s          
   |+++++++++++++++++++++++++++++++                   | 61% ~34s          
   |++++++++++++++++++++++++++++++++                  | 62% ~33s          
   |++++++++++++++++++++++++++++++++                  | 63% ~32s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~31s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~30s          
   |++++++++++++++++++++++++++++++++++                | 66% ~29s          
   |++++++++++++++++++++++++++++++++++                | 67% ~28s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~27s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~26s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~25s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~24s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~23s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~22s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~21s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~21s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~20s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~19s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~18s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~05s          
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 24s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 45s      
   |++                                                | 2 % ~01m 45s      
   |++                                                | 3 % ~01m 43s      
   |+++                                               | 4 % ~01m 41s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+++                                               | 5 % ~01m 44s      
   |++++                                              | 6 % ~01m 42s      
   |++++                                              | 7 % ~01m 43s      
   |+++++                                             | 8 % ~01m 41s      
   |+++++                                             | 9 % ~01m 43s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++                                            | 10% ~01m 42s      
   |++++++                                            | 11% ~01m 41s      
   |+++++++                                           | 12% ~01m 40s      
   |+++++++                                           | 13% ~01m 38s      
   |++++++++                                          | 14% ~01m 37s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++++                                          | 15% ~01m 37s      
   |+++++++++                                         | 16% ~01m 35s      
   |+++++++++                                         | 17% ~01m 34s      
   |++++++++++                                        | 18% ~01m 33s      
   |++++++++++                                        | 19% ~01m 31s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+++++++++++                                       | 20% ~01m 31s      
   |+++++++++++                                       | 21% ~01m 29s      
   |++++++++++++                                      | 22% ~01m 28s      
   |++++++++++++                                      | 23% ~01m 27s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+++++++++++++                                     | 24% ~01m 26s      
   |+++++++++++++                                     | 25% ~01m 25s      
   |++++++++++++++                                    | 26% ~01m 24s      
   |++++++++++++++                                    | 27% ~01m 23s      
   |+++++++++++++++                                   | 28% ~01m 21s      
   |+++++++++++++++                                   | 29% ~01m 20s      
   |++++++++++++++++                                  | 30% ~01m 18s      
   |++++++++++++++++                                  | 31% ~01m 17s      
   |+++++++++++++++++                                 | 32% ~01m 16s      
   |+++++++++++++++++                                 | 33% ~01m 14s      
   |++++++++++++++++++                                | 34% ~01m 13s      
   |++++++++++++++++++                                | 35% ~01m 11s      
   |+++++++++++++++++++                               | 36% ~01m 10s      
   |+++++++++++++++++++                               | 37% ~01m 09s      
   |++++++++++++++++++++                              | 38% ~01m 08s      
   |++++++++++++++++++++                              | 39% ~01m 07s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+++++++++++++++++++++                             | 40% ~01m 05s      
   |+++++++++++++++++++++                             | 41% ~01m 04s      
   |++++++++++++++++++++++                            | 42% ~01m 03s      
   |++++++++++++++++++++++                            | 43% ~01m 02s      
   |+++++++++++++++++++++++                           | 44% ~01m 00s      
   |+++++++++++++++++++++++                           | 45% ~59s          
   |++++++++++++++++++++++++                          | 46% ~58s          
   |++++++++++++++++++++++++                          | 47% ~57s          
   |+++++++++++++++++++++++++                         | 48% ~56s          
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+++++++++++++++++++++++++                         | 49% ~55s          
   |++++++++++++++++++++++++++                        | 51% ~54s          
   |++++++++++++++++++++++++++                        | 52% ~52s          
   |+++++++++++++++++++++++++++                       | 53% ~51s          
   |+++++++++++++++++++++++++++                       | 54% ~50s          
   |++++++++++++++++++++++++++++                      | 55% ~49s          
   |++++++++++++++++++++++++++++                      | 56% ~48s          
   |+++++++++++++++++++++++++++++                     | 57% ~47s          
   |+++++++++++++++++++++++++++++                     | 58% ~46s          
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++++++++++++++++++++++++++                    | 59% ~45s          
   |++++++++++++++++++++++++++++++                    | 60% ~44s          
   |+++++++++++++++++++++++++++++++                   | 61% ~43s          
   |+++++++++++++++++++++++++++++++                   | 62% ~42s          
   |++++++++++++++++++++++++++++++++                  | 63% ~41s          
   |++++++++++++++++++++++++++++++++                  | 64% ~39s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~38s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~37s          
   |++++++++++++++++++++++++++++++++++                | 67% ~36s          
   |++++++++++++++++++++++++++++++++++                | 68% ~35s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~34s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~33s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~32s          
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++++++++++++++++++++++++++++++++              | 72% ~31s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~29s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~28s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~27s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~26s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~25s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~24s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~23s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~22s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~07s          
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 48s
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 52s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++                                                | 2 % ~01m 59s      
   |++                                                | 3 % ~01m 54s      
   |+++                                               | 4 % ~01m 50s      
   |+++                                               | 5 % ~01m 48s      
   |++++                                              | 6 % ~01m 45s      
   |++++                                              | 7 % ~01m 42s      
   |+++++                                             | 8 % ~01m 42s      
   |+++++                                             | 9 % ~01m 40s      
   |++++++                                            | 10% ~01m 38s      
   |++++++                                            | 11% ~01m 36s      
   |+++++++                                           | 12% ~01m 34s      
   |+++++++                                           | 13% ~01m 32s      
   |++++++++                                          | 14% ~01m 31s      
   |++++++++                                          | 15% ~01m 30s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+++++++++                                         | 16% ~01m 30s      
   |+++++++++                                         | 18% ~01m 29s      
   |++++++++++                                        | 19% ~01m 28s      
   |++++++++++                                        | 20% ~01m 27s      
   |+++++++++++                                       | 21% ~01m 26s      
   |+++++++++++                                       | 22% ~01m 25s      
   |++++++++++++                                      | 23% ~01m 24s      
   |++++++++++++                                      | 24% ~01m 23s      
   |+++++++++++++                                     | 25% ~01m 22s      
   |+++++++++++++                                     | 26% ~01m 21s      
   |++++++++++++++                                    | 27% ~01m 20s      
   |++++++++++++++                                    | 28% ~01m 19s      
   |+++++++++++++++                                   | 29% ~01m 18s      
   |+++++++++++++++                                   | 30% ~01m 17s      
   |++++++++++++++++                                  | 31% ~01m 16s      
   |++++++++++++++++                                  | 32% ~01m 15s      
   |+++++++++++++++++                                 | 33% ~01m 14s      
   |++++++++++++++++++                                | 34% ~01m 12s      
   |++++++++++++++++++                                | 35% ~01m 11s      
   |+++++++++++++++++++                               | 36% ~01m 10s      
   |+++++++++++++++++++                               | 37% ~01m 09s      
   |++++++++++++++++++++                              | 38% ~01m 07s      
   |++++++++++++++++++++                              | 39% ~01m 06s      
   |+++++++++++++++++++++                             | 40% ~01m 05s      
   |+++++++++++++++++++++                             | 41% ~01m 04s      
   |++++++++++++++++++++++                            | 42% ~01m 03s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++++++++++++++++++                            | 43% ~01m 02s      
   |+++++++++++++++++++++++                           | 44% ~01m 01s      
   |+++++++++++++++++++++++                           | 45% ~60s          
   |++++++++++++++++++++++++                          | 46% ~59s          
   |++++++++++++++++++++++++                          | 47% ~57s          
   |+++++++++++++++++++++++++                         | 48% ~56s          
   |+++++++++++++++++++++++++                         | 49% ~55s          
   |++++++++++++++++++++++++++                        | 51% ~54s          
   |++++++++++++++++++++++++++                        | 52% ~53s          
   |+++++++++++++++++++++++++++                       | 53% ~51s          
   |+++++++++++++++++++++++++++                       | 54% ~50s          
   |++++++++++++++++++++++++++++                      | 55% ~49s          
   |++++++++++++++++++++++++++++                      | 56% ~48s          
   |+++++++++++++++++++++++++++++                     | 57% ~47s          
   |+++++++++++++++++++++++++++++                     | 58% ~46s          
   |++++++++++++++++++++++++++++++                    | 59% ~44s          
   |++++++++++++++++++++++++++++++                    | 60% ~43s          
   |+++++++++++++++++++++++++++++++                   | 61% ~42s          
   |+++++++++++++++++++++++++++++++                   | 62% ~41s          
   |++++++++++++++++++++++++++++++++                  | 63% ~40s          
   |++++++++++++++++++++++++++++++++                  | 64% ~39s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~38s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~37s          
   |++++++++++++++++++++++++++++++++++                | 67% ~36s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~35s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~34s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~33s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~31s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~30s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~29s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~28s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~27s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~26s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~25s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~23s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~22s          
   |+++++++++++++++++++++++++++++++++++++++++         | 80% ~21s          
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~14s          
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 50s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 24s      
   |++                                                | 2 % ~01m 27s      
   |++                                                | 3 % ~01m 32s      
   |+++                                               | 4 % ~01m 31s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 82-100 (Heart_Plate.Rmd) 

   |+++                                               | 5 % ~01m 33s      
   |++++                                              | 6 % ~01m 34s      
   |++++                                              | 7 % ~01m 32s      
   |+++++                                             | 8 % ~01m 30s      
   |+++++                                             | 9 % ~01m 27s      
   |++++++                                            | 11% ~01m 26s      
   |++++++                                            | 12% ~01m 24s      
   |+++++++                                           | 13% ~01m 22s      
   |+++++++                                           | 14% ~01m 21s      
   |++++++++                                          | 15% ~01m 20s      
   |++++++++                                          | 16% ~01m 19s      
   |+++++++++                                         | 17% ~01m 18s      
   |+++++++++                                         | 18% ~01m 17s      
   |++++++++++                                        | 19% ~01m 16s      
   |++++++++++                                        | 20% ~01m 16s      
   |+++++++++++                                       | 21% ~01m 15s      
   |++++++++++++                                      | 22% ~01m 14s      
   |++++++++++++                                      | 23% ~01m 14s      
   |+++++++++++++                                     | 24% ~01m 14s      
   |+++++++++++++                                     | 25% ~01m 13s      
   |++++++++++++++                                    | 26% ~01m 12s      
   |++++++++++++++                                    | 27% ~01m 12s      
   |+++++++++++++++                                   | 28% ~01m 11s      
   |+++++++++++++++                                   | 29% ~01m 10s      
   |++++++++++++++++                                  | 31% ~01m 09s      
   |++++++++++++++++                                  | 32% ~01m 08s      
   |+++++++++++++++++                                 | 33% ~01m 07s      
   |+++++++++++++++++                                 | 34% ~01m 08s      
   |++++++++++++++++++                                | 35% ~01m 07s      
   |++++++++++++++++++                                | 36% ~01m 06s      
   |+++++++++++++++++++                               | 37% ~01m 05s      
   |+++++++++++++++++++                               | 38% ~01m 04s      
   |++++++++++++++++++++                              | 39% ~01m 03s      
   |++++++++++++++++++++                              | 40% ~01m 02s      
   |+++++++++++++++++++++                             | 41% ~01m 00s      
   |++++++++++++++++++++++                            | 42% ~59s          
   |++++++++++++++++++++++                            | 43% ~58s          
   |+++++++++++++++++++++++                           | 44% ~57s          
   |+++++++++++++++++++++++                           | 45% ~56s          
   |++++++++++++++++++++++++                          | 46% ~55s          
   |++++++++++++++++++++++++                          | 47% ~54s          
   |+++++++++++++++++++++++++                         | 48% ~53s          
   |+++++++++++++++++++++++++                         | 49% ~51s          
   |++++++++++++++++++++++++++                        | 51% ~50s          
   |++++++++++++++++++++++++++                        | 52% ~49s          
   |+++++++++++++++++++++++++++                       | 53% ~48s          
   |+++++++++++++++++++++++++++                       | 54% ~47s          
   |++++++++++++++++++++++++++++                      | 55% ~46s          
   |++++++++++++++++++++++++++++                      | 56% ~45s          
   |+++++++++++++++++++++++++++++                     | 57% ~44s          
   |+++++++++++++++++++++++++++++                     | 58% ~43s          
   |++++++++++++++++++++++++++++++                    | 59% ~42s          
   |++++++++++++++++++++++++++++++                    | 60% ~41s          
   |+++++++++++++++++++++++++++++++                   | 61% ~39s          
   |++++++++++++++++++++++++++++++++                  | 62% ~38s          
   |++++++++++++++++++++++++++++++++                  | 63% ~37s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~36s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~35s          
   |++++++++++++++++++++++++++++++++++                | 66% ~34s          
   |++++++++++++++++++++++++++++++++++                | 67% ~33s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~32s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~31s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~30s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~29s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~28s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~27s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~25s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~24s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~23s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~22s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~21s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 41s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 11s      
   |++                                                | 2 % ~01m 03s      
   |++                                                | 3 % ~59s          
   |+++                                               | 4 % ~56s          
   |+++                                               | 5 % ~55s          
   |++++                                              | 6 % ~54s          
   |++++                                              | 7 % ~53s          
   |+++++                                             | 8 % ~52s          
   |+++++                                             | 9 % ~51s          
   |++++++                                            | 10% ~50s          
   |++++++                                            | 11% ~50s          
   |+++++++                                           | 12% ~49s          
   |+++++++                                           | 13% ~48s          
   |++++++++                                          | 14% ~49s          
   |++++++++                                          | 15% ~50s          
   |+++++++++                                         | 16% ~49s          
   |+++++++++                                         | 17% ~48s          
   |++++++++++                                        | 18% ~48s          
   |++++++++++                                        | 19% ~48s          
   |+++++++++++                                       | 20% ~48s          
   |+++++++++++                                       | 21% ~48s          
   |++++++++++++                                      | 22% ~48s          
   |++++++++++++                                      | 23% ~47s          
   |+++++++++++++                                     | 24% ~46s          
   |+++++++++++++                                     | 26% ~45s          
   |++++++++++++++                                    | 27% ~45s          
   |++++++++++++++                                    | 28% ~44s          
   |+++++++++++++++                                   | 29% ~43s          
   |+++++++++++++++                                   | 30% ~42s          
   |++++++++++++++++                                  | 31% ~42s          
   |++++++++++++++++                                  | 32% ~41s          
   |+++++++++++++++++                                 | 33% ~40s          
   |+++++++++++++++++                                 | 34% ~40s          
   |++++++++++++++++++                                | 35% ~40s          
   |++++++++++++++++++                                | 36% ~40s          
   |+++++++++++++++++++                               | 37% ~39s          
   |+++++++++++++++++++                               | 38% ~39s          
   |++++++++++++++++++++                              | 39% ~38s          
   |++++++++++++++++++++                              | 40% ~38s          
   |+++++++++++++++++++++                             | 41% ~38s          
   |+++++++++++++++++++++                             | 42% ~38s          
   |++++++++++++++++++++++                            | 43% ~37s          
   |++++++++++++++++++++++                            | 44% ~36s          
   |+++++++++++++++++++++++                           | 45% ~36s          
   |+++++++++++++++++++++++                           | 46% ~35s          
   |++++++++++++++++++++++++                          | 47% ~34s          
   |++++++++++++++++++++++++                          | 48% ~34s          
   |+++++++++++++++++++++++++                         | 49% ~33s          
   |+++++++++++++++++++++++++                         | 50% ~32s          
   |++++++++++++++++++++++++++                        | 51% ~31s          
   |+++++++++++++++++++++++++++                       | 52% ~31s          
   |+++++++++++++++++++++++++++                       | 53% ~30s          
   |++++++++++++++++++++++++++++                      | 54% ~29s          
   |++++++++++++++++++++++++++++                      | 55% ~29s          
   |+++++++++++++++++++++++++++++                     | 56% ~28s          
   |+++++++++++++++++++++++++++++                     | 57% ~27s          
   |++++++++++++++++++++++++++++++                    | 58% ~27s          
   |++++++++++++++++++++++++++++++                    | 59% ~26s          
   |+++++++++++++++++++++++++++++++                   | 60% ~26s          
   |+++++++++++++++++++++++++++++++                   | 61% ~25s          
   |++++++++++++++++++++++++++++++++                  | 62% ~24s          
   |++++++++++++++++++++++++++++++++                  | 63% ~24s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~23s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~23s          
   |++++++++++++++++++++++++++++++++++                | 66% ~22s          
   |++++++++++++++++++++++++++++++++++                | 67% ~21s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~21s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~20s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~19s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~19s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~18s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~18s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~17s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~16s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~16s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~15s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~15s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~02s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 10s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 49s      
   |++                                                | 2 % ~01m 47s      
   |++                                                | 3 % ~01m 45s      
   |+++                                               | 4 % ~01m 42s      
   |+++                                               | 5 % ~01m 41s      
   |++++                                              | 6 % ~01m 41s      
   |++++                                              | 7 % ~01m 40s      
   |+++++                                             | 8 % ~01m 39s      
   |+++++                                             | 9 % ~01m 39s      
   |++++++                                            | 10% ~01m 38s      
   |++++++                                            | 11% ~01m 37s      
   |+++++++                                           | 12% ~01m 38s      
   |+++++++                                           | 13% ~01m 37s      
   |++++++++                                          | 14% ~01m 35s      
   |++++++++                                          | 15% ~01m 34s      
   |+++++++++                                         | 16% ~01m 32s      
   |+++++++++                                         | 17% ~01m 31s      
   |++++++++++                                        | 18% ~01m 30s      
   |++++++++++                                        | 19% ~01m 29s      
   |+++++++++++                                       | 20% ~01m 28s      
   |+++++++++++                                       | 21% ~01m 27s      
   |++++++++++++                                      | 22% ~01m 26s      
   |++++++++++++                                      | 23% ~01m 25s      
   |+++++++++++++                                     | 24% ~01m 25s      
   |+++++++++++++                                     | 26% ~01m 24s      
   |++++++++++++++                                    | 27% ~01m 22s      
   |++++++++++++++                                    | 28% ~01m 21s      
   |+++++++++++++++                                   | 29% ~01m 20s      
   |+++++++++++++++                                   | 30% ~01m 18s      
   |++++++++++++++++                                  | 31% ~01m 17s      
   |++++++++++++++++                                  | 32% ~01m 16s      
   |+++++++++++++++++                                 | 33% ~01m 15s      
   |+++++++++++++++++                                 | 34% ~01m 14s      
   |++++++++++++++++++                                | 35% ~01m 13s      
   |++++++++++++++++++                                | 36% ~01m 12s      
   |+++++++++++++++++++                               | 37% ~01m 11s      
   |+++++++++++++++++++                               | 38% ~01m 10s      
   |++++++++++++++++++++                              | 39% ~01m 09s      
   |++++++++++++++++++++                              | 40% ~01m 08s      
   |+++++++++++++++++++++                             | 41% ~01m 06s      
   |+++++++++++++++++++++                             | 42% ~01m 05s      
   |++++++++++++++++++++++                            | 43% ~01m 04s      
   |++++++++++++++++++++++                            | 44% ~01m 03s      
   |+++++++++++++++++++++++                           | 45% ~01m 02s      
   |+++++++++++++++++++++++                           | 46% ~01m 01s      
   |++++++++++++++++++++++++                          | 47% ~60s          
   |++++++++++++++++++++++++                          | 48% ~59s          
   |+++++++++++++++++++++++++                         | 49% ~58s          
   |+++++++++++++++++++++++++                         | 50% ~57s          
   |++++++++++++++++++++++++++                        | 51% ~56s          
   |+++++++++++++++++++++++++++                       | 52% ~55s          
   |+++++++++++++++++++++++++++                       | 53% ~55s          
   |++++++++++++++++++++++++++++                      | 54% ~54s          
   |++++++++++++++++++++++++++++                      | 55% ~52s          
   |+++++++++++++++++++++++++++++                     | 56% ~51s          
   |+++++++++++++++++++++++++++++                     | 57% ~50s          
   |++++++++++++++++++++++++++++++                    | 58% ~49s          
   |++++++++++++++++++++++++++++++                    | 59% ~48s          
   |+++++++++++++++++++++++++++++++                   | 60% ~46s          
   |+++++++++++++++++++++++++++++++                   | 61% ~45s          
   |++++++++++++++++++++++++++++++++                  | 62% ~44s          
   |++++++++++++++++++++++++++++++++                  | 63% ~43s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~42s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~40s          
   |++++++++++++++++++++++++++++++++++                | 66% ~39s          
   |++++++++++++++++++++++++++++++++++                | 67% ~38s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~37s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~36s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~35s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~34s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~32s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~31s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~30s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~29s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~27s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~26s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~25s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~24s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~23s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~22s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~17s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 58s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~03m 04s      
   |++                                                | 2 % ~03m 03s      
   |++                                                | 3 % ~02m 57s      
   |+++                                               | 4 % ~02m 56s      
   |+++                                               | 5 % ~02m 55s      
   |++++                                              | 6 % ~02m 54s      
   |++++                                              | 7 % ~02m 53s      
   |+++++                                             | 8 % ~02m 50s      
   |+++++                                             | 9 % ~02m 51s      
   |++++++                                            | 10% ~02m 48s      
   |++++++                                            | 11% ~02m 51s      
   |+++++++                                           | 12% ~02m 48s      
   |+++++++                                           | 13% ~02m 46s      
   |++++++++                                          | 14% ~02m 44s      
   |++++++++                                          | 15% ~02m 43s      
   |+++++++++                                         | 16% ~02m 42s      
   |+++++++++                                         | 18% ~02m 40s      
   |++++++++++                                        | 19% ~02m 39s      
   |++++++++++                                        | 20% ~02m 37s      
   |+++++++++++                                       | 21% ~02m 35s      
   |+++++++++++                                       | 22% ~02m 33s      
   |++++++++++++                                      | 23% ~02m 30s      
   |++++++++++++                                      | 24% ~02m 29s      
   |+++++++++++++                                     | 25% ~02m 27s      
   |+++++++++++++                                     | 26% ~02m 25s      
   |++++++++++++++                                    | 27% ~02m 23s      
   |++++++++++++++                                    | 28% ~02m 20s      
   |+++++++++++++++                                   | 29% ~02m 18s      
   |+++++++++++++++                                   | 30% ~02m 16s      
   |++++++++++++++++                                  | 31% ~02m 14s      
   |++++++++++++++++                                  | 32% ~02m 12s      
   |+++++++++++++++++                                 | 33% ~02m 10s      
   |++++++++++++++++++                                | 34% ~02m 08s      
   |++++++++++++++++++                                | 35% ~02m 06s      
   |+++++++++++++++++++                               | 36% ~02m 04s      
   |+++++++++++++++++++                               | 37% ~02m 03s      
   |++++++++++++++++++++                              | 38% ~02m 01s      
   |++++++++++++++++++++                              | 39% ~01m 60s      
   |+++++++++++++++++++++                             | 40% ~01m 57s      
   |+++++++++++++++++++++                             | 41% ~01m 55s      
   |++++++++++++++++++++++                            | 42% ~01m 53s      
   |++++++++++++++++++++++                            | 43% ~01m 51s      
   |+++++++++++++++++++++++                           | 44% ~01m 49s      
   |+++++++++++++++++++++++                           | 45% ~01m 47s      
   |++++++++++++++++++++++++                          | 46% ~01m 45s      
   |++++++++++++++++++++++++                          | 47% ~01m 43s      
   |+++++++++++++++++++++++++                         | 48% ~01m 41s      
   |+++++++++++++++++++++++++                         | 49% ~01m 39s      
   |++++++++++++++++++++++++++                        | 51% ~01m 37s      
   |++++++++++++++++++++++++++                        | 52% ~01m 35s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 33s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 31s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 30s      
   |++++++++++++++++++++++++++++                      | 56% ~01m 27s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 25s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 24s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 21s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 19s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 17s      
   |+++++++++++++++++++++++++++++++                   | 62% ~01m 15s      
   |++++++++++++++++++++++++++++++++                  | 63% ~01m 13s      
   |++++++++++++++++++++++++++++++++                  | 64% ~01m 11s      
   |+++++++++++++++++++++++++++++++++                 | 65% ~01m 09s      
   |+++++++++++++++++++++++++++++++++                 | 66% ~01m 07s      
   |++++++++++++++++++++++++++++++++++                | 67% ~01m 05s      
   |+++++++++++++++++++++++++++++++++++               | 68% ~01m 03s      
   |+++++++++++++++++++++++++++++++++++               | 69% ~01m 01s      
   |++++++++++++++++++++++++++++++++++++              | 70% ~59s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~57s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~55s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~53s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~51s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~49s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~47s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~45s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~43s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~41s          
   |+++++++++++++++++++++++++++++++++++++++++         | 80% ~39s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~37s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~35s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~33s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~31s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~29s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~27s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~23s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 03m 16s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 36s      
   |+                                                 | 2 % ~02m 42s      
   |++                                                | 3 % ~02m 40s      
   |++                                                | 4 % ~02m 35s      
   |+++                                               | 5 % ~02m 37s      
   |+++                                               | 6 % ~02m 34s      
   |++++                                              | 7 % ~02m 29s      
   |++++                                              | 8 % ~02m 26s      
   |+++++                                             | 9 % ~02m 23s      
   |+++++                                             | 10% ~02m 20s      
   |++++++                                            | 11% ~02m 18s      
   |++++++                                            | 12% ~02m 15s      
   |+++++++                                           | 13% ~02m 13s      
   |+++++++                                           | 14% ~02m 11s      
   |++++++++                                          | 15% ~02m 09s      
   |++++++++                                          | 16% ~02m 07s      
   |+++++++++                                         | 17% ~02m 05s      
   |+++++++++                                         | 18% ~02m 03s      
   |++++++++++                                        | 19% ~02m 02s      
   |++++++++++                                        | 20% ~02m 01s      
   |+++++++++++                                       | 21% ~02m 01s      
   |+++++++++++                                       | 22% ~01m 59s      
   |++++++++++++                                      | 23% ~01m 57s      
   |++++++++++++                                      | 24% ~01m 56s      
   |+++++++++++++                                     | 25% ~01m 55s      
   |+++++++++++++                                     | 26% ~01m 53s      
   |++++++++++++++                                    | 27% ~01m 52s      
   |++++++++++++++                                    | 28% ~01m 50s      
   |+++++++++++++++                                   | 29% ~01m 49s      
   |+++++++++++++++                                   | 30% ~01m 47s      
   |++++++++++++++++                                  | 31% ~01m 45s      
   |++++++++++++++++                                  | 32% ~01m 44s      
   |+++++++++++++++++                                 | 33% ~01m 42s      
   |+++++++++++++++++                                | 34% ~01m 40s      
   |++++++++++++++++++                                | 35% ~01m 39s      
   |++++++++++++++++++                                | 36% ~01m 37s      
   |+++++++++++++++++++                               | 37% ~01m 36s      
   |+++++++++++++++++++                               | 38% ~01m 34s      
   |++++++++++++++++++++                              | 39% ~01m 32s      
   |++++++++++++++++++++                              | 40% ~01m 31s      
   |+++++++++++++++++++++                             | 41% ~01m 29s      
   |+++++++++++++++++++++                             | 42% ~01m 28s      
   |++++++++++++++++++++++                            | 43% ~01m 26s      
   |++++++++++++++++++++++                            | 44% ~01m 25s      
   |+++++++++++++++++++++++                           | 45% ~01m 23s      
   |+++++++++++++++++++++++                           | 46% ~01m 23s      
   |++++++++++++++++++++++++                          | 47% ~01m 21s      
   |++++++++++++++++++++++++                          | 48% ~01m 19s      
   |+++++++++++++++++++++++++                         | 49% ~01m 18s      
   |+++++++++++++++++++++++++                         | 50% ~01m 16s      
   |++++++++++++++++++++++++++                        | 51% ~01m 14s      
   |++++++++++++++++++++++++++                        | 52% ~01m 13s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 11s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 10s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 08s      
   |++++++++++++++++++++++++++++                     | 56% ~01m 07s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 05s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 03s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 02s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 00s      
   |+++++++++++++++++++++++++++++++                   | 61% ~59s          
   |+++++++++++++++++++++++++++++++                   | 62% ~57s          
   |++++++++++++++++++++++++++++++++                  | 63% ~56s          
   |++++++++++++++++++++++++++++++++                  | 64% ~54s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~53s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~51s          
   |++++++++++++++++++++++++++++++++++                | 67% ~50s          
   |++++++++++++++++++++++++++++++++++               | 68% ~49s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~47s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~46s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~44s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~43s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~41s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~40s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~38s          

Display the top markers you computed above.

tiss.markers %>% group_by(cluster) %>% top_n(10, avg_diff)

Assigning cell type identity to clusters

At a coarse level, we can use canonical markers to match the unbiased clustering to known cell types:

# stash current cluster IDs
tiss <- StashIdent(object = tiss, save.name = "cluster.ids")
# enumerate current cluster IDs and the labels for them
cluster.ids <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
annotation <- c("epithelial cell of large intestine", "enterocyte of epithelium of large intestine", "epithelial cell of large intestine", "large intestine goblet cell", "large intestine goblet cell", "epithelial cell of large intestine", "enterocyte of epithelium of large intestine", "large intestine goblet cell", "large intestine goblet cell", "epithelial cell of large intestine", "large intestine goblet cell", "Brush cell of epithelium proper of large intestine", "enteroendocrine cell")
cell_ontology_id <- c("CL:0002253", "CL:0002071", "CL:0002253", "CL:1000320", "CL:1000320", "CL:0002253", "CL:0002071", "CL:1000320", "CL:1000320", "CL:0002253", "CL:1000320", "CL:0002203", "CL:0000164")
tiss@meta.data[,'annotation'] <- plyr::mapvalues(x = tiss@ident, from = cluster.ids, to = annotation)
tiss@meta.data[,'cell_ontology_id'] <- plyr::mapvalues(x = tiss@ident, from = cluster.ids, to = cell_ontology_id)
tiss@meta.data[tiss@cell.names,'annotation'] <- as.character(tiss@meta.data$annotation)
tiss@meta.data[tiss@cell.names,'cell_ontology_id'] <- as.character(tiss@meta.data$cell_ontology_id)
TSNEPlot(object = tiss, do.label = TRUE, pt.size = 0.5, group.by='annotation')

Checking for batch effects

Color by metadata, like plate barcode, to check for batch effects.

TSNEPlot(object = tiss, do.return = TRUE, group.by = "plate.barcode")

Print a table showing the count of cells in each identity category from each plate.

table(as.character(tiss@ident), as.character(tiss@meta.data$plate.barcode))
    
     MAA000583 MAA000611 MAA000612 MAA000870 MAA000871 MAA000909 MAA000937 MAA001539 MAA001632 MAA001869 MAA001871 MAA001872
  0         11       113        89        49       167       173         9        23        55        30       100       104
  1          0        80        73         1        75        89         8         0        86        86        80        82
  10         0         0         0         0         1         0         0         2         1       109         7         0
  11         0         1         3         2        11         5         3         0         2         6         9        10
  12         0         4         1         4         4         3         1         4         2         2         0         0
  2          6        90       102         9        37        20        23         3       131        13        68        73
  3          0        22        20         4        30        12         5         1        51        19        23        31
  4         72         0         0        64         0         0        74         0         0         0         0         0
  5         59         0         1        47         1         0        70         2         0         0         0         0
  6         65         0         0        32         1         0        26        20         0         0         0         0
  7          1         0         0         1         0         0         0         8         0         0         0         0
  8         12         1         0        30         2         1        11        61         1         1         1         0
  9          0         1         0         9         0         0         1       106         0         0         0         3
    
     MAA001873 MAA001875
  0         37        29
  1          2         0
  10        12         0
  11         1         2
  12         0         0
  2          0        12
  3          9         4
  4          0        12
  5          1        35
  6         20        36
  7        145         1
  8         10         9
  9          4         8

When you save the annotated tissue, please give it a name.

filename = here('00_data_ingest', 'tissue_seurat_robj', 
                     paste0(tissue_of_interest, "_seurat_tiss.Robj"))
print(filename)
save(tiss, file=filename)

Export the final metadata

So that Biohub can easily combine all your annotations, please export them as a simple csv.

head(tiss@meta.data)
filename = here('00_data_ingest', 'tissue_annotation_csv', 
                     paste0(tissue_of_interest, "_annotation.csv"))
write.csv(tiss@meta.data[,c('plate.barcode','annotation','cell_ontology_id')], file=filename)
LS0tCnRpdGxlOiAiQ29sb24gRkFDUyBOb3RlYm9vayIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6IGRlZmF1bHQKICBodG1sX25vdGVib29rOiBkZWZhdWx0Ci0tLQoKRW50ZXIgdGhlIGRpcmVjdG9yeSBvZiB0aGUgbWFjYSBmb2xkZXIgb24geW91ciBkcml2ZSBhbmQgdGhlIG5hbWUgb2YgdGhlIHRpc3N1ZSB5b3Ugd2FudCB0byBhbmFseXplLgoKYGBge3J9CnRpc3N1ZV9vZl9pbnRlcmVzdCA9ICJDb2xvbiIKYGBgCgpMb2FkIHRoZSByZXF1aXNpdGUgcGFja2FnZXMgYW5kIHNvbWUgYWRkaXRpb25hbCBoZWxwZXIgZnVuY3Rpb25zLgoKYGBge3J9CmxpYnJhcnkoaGVyZSkKbGlicmFyeSh1c2VmdWwpCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KE1hdHJpeCkKCnNhdmVfZGlyID0gaGVyZSgnMDBfZGF0YV9pbmdlc3QnLCAndGlzc3VlX3JvYmonKQpgYGAKCgoKYGBge3J9CiMgcmVhZCB0aGUgbWV0YWRhdGEgdG8gZ2V0IHRoZSBwbGF0ZXMgd2Ugd2FudApwbGF0ZV9tZXRhZGF0YV9maWxlbmFtZSA9IGhlcmUoJzAwX2RhdGFfaW5nZXN0JywgJ2ZhY3NfcmF3X2RhdGEnLCAnbWV0YWRhdGFfRkFDUy5jc3YnKQoKcGxhdGVfbWV0YWRhdGEgPC0gcmVhZC5jc3YocGxhdGVfbWV0YWRhdGFfZmlsZW5hbWUsIHNlcD0iLCIsIGhlYWRlciA9IFRSVUUpCmNvbG5hbWVzKHBsYXRlX21ldGFkYXRhKVsxXSA8LSAicGxhdGUuYmFyY29kZSIKcGxhdGVfbWV0YWRhdGEKYGBgCgpTdWJzZXQgdGhlIG1ldGFkYXRhIG9uIHRoZSB0aXNzdWUuCgpgYGB7cn0KdGlzc3VlX3BsYXRlcyA9IGZpbHRlcihwbGF0ZV9tZXRhZGF0YSwgdGlzc3VlID09IHRpc3N1ZV9vZl9pbnRlcmVzdClbLGMoJ3BsYXRlLmJhcmNvZGUnLCd0aXNzdWUnLCdzdWJ0aXNzdWUnLCdtb3VzZS5zZXgnKV0KdGlzc3VlX3BsYXRlcwpgYGAKCkxvYWQgdGhlIHJlYWQgY291bnQgZGF0YS4KYGBge3J9CiNMb2FkIHRoZSBnZW5lIG5hbWVzIGFuZCBzZXQgdGhlIG1ldGFkYXRhIGNvbHVtbnMgYnkgb3BlbmluZyB0aGUgZmlyc3QgZmlsZQpmaWxlbmFtZSA9IGhlcmUoJzAwX2RhdGFfaW5nZXN0JywgJ2ZhY3NfcmF3X2RhdGEnLCAnRkFDUycsIHBhc3RlMCh0aXNzdWVfb2ZfaW50ZXJlc3QsICctY291bnRzLmNzdicpKQoKcmF3LmRhdGEgPSByZWFkLmNzdihmaWxlbmFtZSwgc2VwPSIsIiwgcm93Lm5hbWVzPTEpCiMgcmF3LmRhdGEgPSBkYXRhLmZyYW1lKHJvdy5uYW1lcyA9IHJvd25hbWVzKHJhdy5kYXRhKSkKY29ybmVyKHJhdy5kYXRhKQpgYGAKTWFrZSBhIHZlY3RvciBvZiBwbGF0ZSBiYXJjb2RlcyBmb3IgZWFjaCBjZWxsCgpgYGB7cn0KcGxhdGUuYmFyY29kZXMgPSBsYXBwbHkoY29sbmFtZXMocmF3LmRhdGEpLCBmdW5jdGlvbih4KSBzdHJzcGxpdChzdHJzcGxpdCh4LCAiXyIpW1sxXV1bMV0sICcuJywgZml4ZWQ9VFJVRSlbWzFdXVsyXSkKaGVhZChwbGF0ZS5iYXJjb2RlcykKYGBgCgpVc2Ugb25seSB0aGUgbWV0YWRhdGEgcm93cyBjb3JyZXNwb25kaW5nIHRvIEJsYWRkZXIgcGxhdGVzLiBNYWtlIGEgcGxhdGUgYmFyY29kZSBkYXRhZnJhbWUgdG8gImV4cGFuZCIgdGhlIHBlci1wbGF0ZSBtZXRhZGF0YSB0byBiZSBwZXItY2VsbC4KCmBgYHtyfQpoZWFkKHJhdy5kYXRhKQpgYGAKCmBgYHtyfQpiYXJjb2RlLmRmID0gdC5kYXRhLmZyYW1lKGFzLmRhdGEuZnJhbWUocGxhdGUuYmFyY29kZXMpKQoKcm93bmFtZXMoYmFyY29kZS5kZikgPSBjb2xuYW1lcyhyYXcuZGF0YSkKY29sbmFtZXMoYmFyY29kZS5kZikgPSBjKCdwbGF0ZS5iYXJjb2RlJykKaGVhZChiYXJjb2RlLmRmKQoKcm5hbWVzID0gcm93Lm5hbWVzKGJhcmNvZGUuZGYpCm1ldGEuZGF0YSA8LSBtZXJnZShiYXJjb2RlLmRmLCBwbGF0ZV9tZXRhZGF0YSwgYnk9J3BsYXRlLmJhcmNvZGUnLCBzb3J0ID0gRikKcm93Lm5hbWVzKG1ldGEuZGF0YSkgPC0gcm5hbWVzCgojIFNvcnQgY2VsbHMgYnkgcGxhdGUgYmFyY29kZSBiZWNhdXNlIHRoYXQncyBob3cgdGhlIGRhdGEgd2FzIG9yaWdpbmFsbHkKbWV0YS5kYXRhID0gbWV0YS5kYXRhW29yZGVyKG1ldGEuZGF0YSRwbGF0ZS5iYXJjb2RlKSwgXQpyYXcuZGF0YSA9IHJhdy5kYXRhWywgcm93bmFtZXMobWV0YS5kYXRhKV0KaGVhZChyYXcuZGF0YSkKYGBgCgoKUHJvY2VzcyB0aGUgcmF3IGRhdGEgYW5kIGxvYWQgaXQgaW50byB0aGUgU2V1cmF0IG9iamVjdC4KCmBgYHtyfQojIEZpbmQgRVJDQydzLCBjb21wdXRlIHRoZSBwZXJjZW50IEVSQ0MsIGFuZCBkcm9wIHRoZW0gZnJvbSB0aGUgcmF3IGRhdGEuCmVyY2NzIDwtIGdyZXAocGF0dGVybiA9ICJeRVJDQy0iLCB4ID0gcm93bmFtZXMoeCA9IHJhdy5kYXRhKSwgdmFsdWUgPSBUUlVFKQpwZXJjZW50LmVyY2MgPC0gTWF0cml4Ojpjb2xTdW1zKHJhdy5kYXRhW2VyY2NzLCBdKS9NYXRyaXg6OmNvbFN1bXMocmF3LmRhdGEpCmVyY2MuaW5kZXggPC0gZ3JlcChwYXR0ZXJuID0gIl5FUkNDLSIsIHggPSByb3duYW1lcyh4ID0gcmF3LmRhdGEpLCB2YWx1ZSA9IEZBTFNFKQpyYXcuZGF0YSA8LSByYXcuZGF0YVstZXJjYy5pbmRleCxdCgojIENyZWF0ZSB0aGUgU2V1cmF0IG9iamVjdCB3aXRoIGFsbCB0aGUgZGF0YQp0aXNzIDwtIENyZWF0ZVNldXJhdE9iamVjdChyYXcuZGF0YSA9IHJhdy5kYXRhLCBwcm9qZWN0ID0gdGlzc3VlX29mX2ludGVyZXN0LCAKICAgICAgICAgICAgICAgICAgICBtaW4uY2VsbHMgPSA1LCBtaW4uZ2VuZXMgPSA1KQoKdGlzcyA8LSBBZGRNZXRhRGF0YShvYmplY3QgPSB0aXNzLCBtZXRhLmRhdGEpCnRpc3MgPC0gQWRkTWV0YURhdGEob2JqZWN0ID0gdGlzcywgcGVyY2VudC5lcmNjLCBjb2wubmFtZSA9ICJwZXJjZW50LmVyY2MiKQojIENoYW5nZSBkZWZhdWx0IG5hbWUgZm9yIHN1bXMgb2YgY291bnRzIGZyb20gblVNSSB0byBuUmVhZHMKY29sbmFtZXModGlzc0BtZXRhLmRhdGEpW2NvbG5hbWVzKHRpc3NAbWV0YS5kYXRhKSA9PSAnblVNSSddIDwtICduUmVhZHMnCgojIENyZWF0ZSBtZXRhZGF0YSBjb2x1bW5zIGZvciBhbm5vdGF0aW9ucyBhbmQgc3ViYW5ub3RhdGlvbnMKdGlzc0BtZXRhLmRhdGFbLCdhbm5vdGF0aW9uJ10gPC0gTkEKdGlzc0BtZXRhLmRhdGFbLCdzdWJhbm5vdGF0aW9uJ10gPC0gTkEKYGBgCgoKQ2FsY3VsYXRlIHBlcmNlbnQgcmlib3NvbWFsIGdlbmVzLgoKYGBge3J9CnJpYm8uZ2VuZXMgPC0gZ3JlcChwYXR0ZXJuID0gIl5ScFtzbF1bWzpkaWdpdDpdXSIsIHggPSByb3duYW1lcyh4ID0gdGlzc0BkYXRhKSwgdmFsdWUgPSBUUlVFKQpwZXJjZW50LnJpYm8gPC0gTWF0cml4Ojpjb2xTdW1zKHRpc3NAcmF3LmRhdGFbcmliby5nZW5lcywgXSkvTWF0cml4Ojpjb2xTdW1zKHRpc3NAcmF3LmRhdGEpCnRpc3MgPC0gQWRkTWV0YURhdGEob2JqZWN0ID0gdGlzcywgbWV0YWRhdGEgPSBwZXJjZW50LnJpYm8sIGNvbC5uYW1lID0gInBlcmNlbnQucmlibyIpCmBgYAoKQSBzYW5pdHkgY2hlY2s6IGdlbmVzIHBlciBjZWxsIHZzIHJlYWRzIHBlciBjZWxsLgoKYGBge3J9CkdlbmVQbG90KG9iamVjdCA9IHRpc3MsIGdlbmUxID0gIm5SZWFkcyIsIGdlbmUyID0gIm5HZW5lIiwgdXNlLnJhdz1UKQpgYGAKCkZpbHRlciBvdXQgY2VsbHMgd2l0aCBmZXcgcmVhZHMgYW5kIGZldyBnZW5lcy4KCmBgYHtyfQp0aXNzIDwtIEZpbHRlckNlbGxzKG9iamVjdCA9IHRpc3MsIHN1YnNldC5uYW1lcyA9IGMoIm5HZW5lIiwgIm5SZWFkcyIpLCAKICAgIGxvdy50aHJlc2hvbGRzID0gYyg1MDAsIDUwMDAwKSwgaGlnaC50aHJlc2hvbGRzID0gYygyNTAwMCwgMjAwMDAwMCkpCmBgYAoKCk5vcm1hbGl6ZSB0aGUgZGF0YSwgdGhlbiByZWdyZXNzIG91dCBjb3JyZWxhdGlvbiB3aXRoIHRvdGFsIHJlYWRzCmBgYHtyfQp0aXNzIDwtIE5vcm1hbGl6ZURhdGEob2JqZWN0ID0gdGlzcykKdGlzcyA8LSBTY2FsZURhdGEob2JqZWN0ID0gdGlzcywgdmFycy50by5yZWdyZXNzID0gYygiblJlYWRzIiwgInBlcmNlbnQucmlibyIsIlJuNDVzIikpCnRpc3MgPC0gRmluZFZhcmlhYmxlR2VuZXMob2JqZWN0ID0gdGlzcywgZG8ucGxvdCA9IFRSVUUsIHguaGlnaC5jdXRvZmYgPSBJbmYsIHkuY3V0b2ZmID0gMC41KQpgYGAKCgpSdW4gUHJpbmNpcGFsIENvbXBvbmVudCBBbmFseXNpcy4KYGBge3J9CnRpc3MgPC0gUnVuUENBKG9iamVjdCA9IHRpc3MsIGRvLnByaW50ID0gRkFMU0UpCnRpc3MgPC0gUHJvamVjdFBDQShvYmplY3QgPSB0aXNzLCBkby5wcmludCA9IEZBTFNFKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD04fQpQQ0hlYXRtYXAob2JqZWN0ID0gdGlzcywgcGMudXNlID0gMTozLCBjZWxscy51c2UgPSA1MDAsIGRvLmJhbGFuY2VkID0gVFJVRSwgbGFiZWwuY29sdW1ucyA9IEZBTFNFLCBudW0uZ2VuZXMgPSA4KQpgYGAKCkxhdGVyIG9uIChpbiBGaW5kQ2x1c3RlcnMgYW5kIFRTTkUpIHlvdSB3aWxsIHBpY2sgYSBudW1iZXIgb2YgcHJpbmNpcGFsIGNvbXBvbmVudHMgdG8gdXNlLiBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mIGtlZXBpbmcgdGhlIG1ham9yIGRpcmVjdGlvbnMgb2YgdmFyaWF0aW9uIGluIHRoZSBkYXRhIGFuZCwgaWRlYWxseSwgc3VwcmVzc2luZyBub2lzZS4gVGhlcmUgaXMgbm8gY29ycmVjdCBhbnN3ZXIgdG8gdGhlIG51bWJlciB0byB1c2UsIGJ1dCBhIGRlY2VudCBydWxlIG9mIHRodW1iIGlzIHRvIGdvIHVudGlsIHRoZSBwbG90IHBsYXRlYXVzLgoKYGBge3J9ClBDRWxib3dQbG90KG9iamVjdCA9IHRpc3MpCmBgYAoKQ2hvb3NlIHRoZSBudW1iZXIgb2YgcHJpbmNpcGFsIGNvbXBvbmVudHMgdG8gdXNlLgpgYGB7cn0KIyBTZXQgbnVtYmVyIG9mIHByaW5jaXBhbCBjb21wb25lbnRzLiAKbi5wY3MgPSAyMApgYGAKCgpUaGUgY2x1c3RlcmluZyBpcyBwZXJmb3JtZWQgYmFzZWQgb24gYSBuZWFyZXN0IG5laWdoYm9ycyBncmFwaC4gQ2VsbHMgdGhhdCBoYXZlIHNpbWlsYXIgZXhwcmVzc2lvbiB3aWxsIGJlIGpvaW5lZCB0b2dldGhlci4gVGhlIExvdXZhaW4gYWxnb3JpdGhtIGxvb2tzIGZvciBncm91cHMgb2YgY2VsbHMgd2l0aCBoaWdoIG1vZHVsYXJpdHktLW1vcmUgY29ubmVjdGlvbnMgd2l0aGluIHRoZSBncm91cCB0aGFuIGJldHdlZW4gZ3JvdXBzLiBUaGUgcmVzb2x1dGlvbiBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB0aGUgc2NhbGUuLi5oaWdoZXIgcmVzb2x1dGlvbiB3aWxsIGdpdmUgbW9yZSBjbHVzdGVycywgbG93ZXIgcmVzb2x1dGlvbiB3aWxsIGdpdmUgZmV3ZXIuCgpGb3IgdGhlIHRvcC1sZXZlbCBjbHVzdGVyaW5nLCBhaW0gdG8gdW5kZXItY2x1c3RlciBpbnN0ZWFkIG9mIG92ZXItY2x1c3Rlci4gSXQgd2lsbCBiZSBlYXN5IHRvIHN1YnNldCBncm91cHMgYW5kIGZ1cnRoZXIgYW5hbHl6ZSB0aGVtIGJlbG93LgoKYGBge3J9CiMgU2V0IHJlc29sdXRpb24gCnJlcy51c2VkIDwtIDAuNQoKdGlzcyA8LSBGaW5kQ2x1c3RlcnMob2JqZWN0ID0gdGlzcywgcmVkdWN0aW9uLnR5cGUgPSAicGNhIiwgZGltcy51c2UgPSAxOm4ucGNzLCAKICAgIHJlc29sdXRpb24gPSByZXMudXNlZCwgcHJpbnQub3V0cHV0ID0gMCwgc2F2ZS5TTk4gPSBUUlVFKQpgYGAKClRvIHZpc3VhbGl6ZSAKYGBge3J9CiMgSWYgY2VsbHMgYXJlIHRvbyBzcHJlYWQgb3V0LCB5b3UgY2FuIHJhaXNlIHRoZSBwZXJwbGV4aXR5LiBJZiB5b3UgaGF2ZSBmZXcgY2VsbHMsIHRyeSBhIGxvd2VyIHBlcnBsZXhpdHkgKGJ1dCBuZXZlciBsZXNzIHRoYW4gMTApLgp0aXNzIDwtIFJ1blRTTkUob2JqZWN0ID0gdGlzcywgZGltcy51c2UgPSAxOm4ucGNzLCBzZWVkLnVzZSA9IDEwLCBwZXJwbGV4aXR5PTMwKQpgYGAKCmBgYHtyfQojIG5vdGUgdGhhdCB5b3UgY2FuIHNldCBkby5sYWJlbD1UIHRvIGhlbHAgbGFiZWwgaW5kaXZpZHVhbCBjbHVzdGVycwpUU05FUGxvdChvYmplY3QgPSB0aXNzLCBkby5sYWJlbCA9IFQpCmBgYAoKQ2hlY2sgZXhwcmVzc2lvbiBvZiBnZW5lcyBvZiBpbnRlcnNldC4KCmBgYHtyfQoje3IsIGVjaG89RkFMU0UsIGZpZy5oZWlnaHQ9MTYsIGZpZy53aWR0aD0xMn0KZ2VuZXNfdG9fY2hlY2sgPSBjKCdMZ3I1JywgJ0tydDIwJywgJ0F0b2gxJywgJ0NoZ2EnLCAnRGNsazEnLCAnTWtpNjcnKQojZ2VuZXNfdG9fY2hlY2sgPSBjKCdBbGInLCAnQ3lwMmYyJywgJ0N5cDJlMScsICdIYW1wJykKCiNGZWF0dXJlUGxvdCh0aXNzLCBnZW5lc190b19jaGVjaywgcHQuc2l6ZSA9IDEsIG5Db2wgPSAzKQpGZWF0dXJlUGxvdCh0aXNzLCBnZW5lc190b19jaGVjaywgcHQuc2l6ZSA9IDEpCmBgYAoKRG90cGxvdHMgbGV0IHlvdSBzZWUgdGhlIGludGVuc2l0eSBvZiBleHBwcmVzc2lvbiBhbmQgdGhlIGZyYWN0aW9uIG9mIGNlbGxzIGV4cHJlc3NpbmcgZm9yIGVhY2ggb2YgeW91ciBnZW5lcyBvZiBpbnRlcmVzdC4KCmBgYHtyfQojIFRvIGNoYW5nZSB0aGUgeS1heGlzIHRvIHNob3cgcmF3IGNvdW50cywgYWRkIHVzZS5yYXcgPSBULgpWbG5QbG90KHRpc3MsIGdlbmVzX3RvX2NoZWNrKQpgYGAKCmBgYHtyfQojIFRvIGNoYW5nZSB0aGUgeS1heGlzIHRvIHNob3cgcmF3IGNvdW50cywgYWRkIHVzZS5yYXcgPSBULgpWbG5QbG90KHRpc3MsICdMZ3I1JykKYGBgCgpgYGB7cn0KIyBUbyBnZXQgcGxvdHMgb2YgdHdvIGdlbmVzLCBhZGQgdXNlLnJhdyA9IFQuCkdlbmVQbG90KHRpc3MsICdLcnQyMCcsICdBdG9oMScpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIGZpZy5oZWlnaHQ9NCwgZmlnLndpZHRoPTh9CiMgVG8gY2hhbmdlIHRoZSB5LWF4aXMgdG8gc2hvdyByYXcgY291bnRzLCBhZGQgdXNlLnJhdyA9IFQuCkRvdFBsb3QodGlzcywgZ2VuZXNfdG9fY2hlY2ssIHBsb3QubGVnZW5kID0gVCkKYGBgCgpIb3cgYmlnIGFyZSB0aGUgY2x1c3RlcnM/CmBgYHtyfQp0YWJsZSh0aXNzQGlkZW50KQpgYGAKCldoaWNoIG1hcmtlcnMgaWRlbnRpZnkgYSBzcGVjaWZpYyBjbHVzdGVyPwoKYGBge3J9CmNsdXN0Lm1hcmtlcnMgPC0gRmluZE1hcmtlcnMob2JqZWN0ID0gdGlzcywgaWRlbnQuMSA9IDAsIG9ubHkucG9zID0gVFJVRSwgbWluLnBjdCA9IDAuMjUsIHRocmVzaC51c2UgPSAwLjI1KQpgYGAKCmBgYHtyfQpwcmludCh4ID0gaGVhZCh4PSBjbHVzdC5tYXJrZXJzLCBuID0gMTApKQpgYGAKCllvdSBjYW4gYWxzbyBjb21wdXRlIGFsbCBtYXJrZXJzIGZvciBhbGwgY2x1c3RlcnMgYXQgb25jZS4gVGhpcyBtYXkgdGFrZSBzb21lIHRpbWUuCmBgYHtyfQp0aXNzLm1hcmtlcnMgPC0gRmluZEFsbE1hcmtlcnMob2JqZWN0ID0gdGlzcywgb25seS5wb3MgPSBUUlVFLCBtaW4ucGN0ID0gMC4yNSwgdGhyZXNoLnVzZSA9IDAuMjUpCmBgYAoKRGlzcGxheSB0aGUgdG9wIG1hcmtlcnMgeW91IGNvbXB1dGVkIGFib3ZlLgpgYGB7cn0KdGlzcy5tYXJrZXJzICU+JSBncm91cF9ieShjbHVzdGVyKSAlPiUgdG9wX24oMTAsIGF2Z19kaWZmKQpgYGAKCiMjIEFzc2lnbmluZyBjZWxsIHR5cGUgaWRlbnRpdHkgdG8gY2x1c3RlcnMKCkF0IGEgY29hcnNlIGxldmVsLCB3ZSBjYW4gdXNlIGNhbm9uaWNhbCBtYXJrZXJzIHRvIG1hdGNoIHRoZSB1bmJpYXNlZCBjbHVzdGVyaW5nIHRvIGtub3duIGNlbGwgdHlwZXM6CgpgYGB7cn0KIyBzdGFzaCBjdXJyZW50IGNsdXN0ZXIgSURzCnRpc3MgPC0gU3Rhc2hJZGVudChvYmplY3QgPSB0aXNzLCBzYXZlLm5hbWUgPSAiY2x1c3Rlci5pZHMiKQoKIyBlbnVtZXJhdGUgY3VycmVudCBjbHVzdGVyIElEcyBhbmQgdGhlIGxhYmVscyBmb3IgdGhlbQpjbHVzdGVyLmlkcyA8LSBjKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIpCmFubm90YXRpb24gPC0gYygiZXBpdGhlbGlhbCBjZWxsIG9mIGxhcmdlIGludGVzdGluZSIsICJlbnRlcm9jeXRlIG9mIGVwaXRoZWxpdW0gb2YgbGFyZ2UgaW50ZXN0aW5lIiwgImVwaXRoZWxpYWwgY2VsbCBvZiBsYXJnZSBpbnRlc3RpbmUiLCAibGFyZ2UgaW50ZXN0aW5lIGdvYmxldCBjZWxsIiwgImxhcmdlIGludGVzdGluZSBnb2JsZXQgY2VsbCIsICJlcGl0aGVsaWFsIGNlbGwgb2YgbGFyZ2UgaW50ZXN0aW5lIiwgImVudGVyb2N5dGUgb2YgZXBpdGhlbGl1bSBvZiBsYXJnZSBpbnRlc3RpbmUiLCAibGFyZ2UgaW50ZXN0aW5lIGdvYmxldCBjZWxsIiwgImxhcmdlIGludGVzdGluZSBnb2JsZXQgY2VsbCIsICJlcGl0aGVsaWFsIGNlbGwgb2YgbGFyZ2UgaW50ZXN0aW5lIiwgImxhcmdlIGludGVzdGluZSBnb2JsZXQgY2VsbCIsICJCcnVzaCBjZWxsIG9mIGVwaXRoZWxpdW0gcHJvcGVyIG9mIGxhcmdlIGludGVzdGluZSIsICJlbnRlcm9lbmRvY3JpbmUgY2VsbCIpCmNlbGxfb250b2xvZ3lfaWQgPC0gYygiQ0w6MDAwMjI1MyIsICJDTDowMDAyMDcxIiwgIkNMOjAwMDIyNTMiLCAiQ0w6MTAwMDMyMCIsICJDTDoxMDAwMzIwIiwgIkNMOjAwMDIyNTMiLCAiQ0w6MDAwMjA3MSIsICJDTDoxMDAwMzIwIiwgIkNMOjEwMDAzMjAiLCAiQ0w6MDAwMjI1MyIsICJDTDoxMDAwMzIwIiwgIkNMOjAwMDIyMDMiLCAiQ0w6MDAwMDE2NCIpCgoKdGlzc0BtZXRhLmRhdGFbLCdhbm5vdGF0aW9uJ10gPC0gcGx5cjo6bWFwdmFsdWVzKHggPSB0aXNzQGlkZW50LCBmcm9tID0gY2x1c3Rlci5pZHMsIHRvID0gYW5ub3RhdGlvbikKdGlzc0BtZXRhLmRhdGFbLCdjZWxsX29udG9sb2d5X2lkJ10gPC0gcGx5cjo6bWFwdmFsdWVzKHggPSB0aXNzQGlkZW50LCBmcm9tID0gY2x1c3Rlci5pZHMsIHRvID0gY2VsbF9vbnRvbG9neV9pZCkKCnRpc3NAbWV0YS5kYXRhW3Rpc3NAY2VsbC5uYW1lcywnYW5ub3RhdGlvbiddIDwtIGFzLmNoYXJhY3Rlcih0aXNzQG1ldGEuZGF0YSRhbm5vdGF0aW9uKQp0aXNzQG1ldGEuZGF0YVt0aXNzQGNlbGwubmFtZXMsJ2NlbGxfb250b2xvZ3lfaWQnXSA8LSBhcy5jaGFyYWN0ZXIodGlzc0BtZXRhLmRhdGEkY2VsbF9vbnRvbG9neV9pZCkKCgpUU05FUGxvdChvYmplY3QgPSB0aXNzLCBkby5sYWJlbCA9IFRSVUUsIHB0LnNpemUgPSAwLjUsIGdyb3VwLmJ5PSdhbm5vdGF0aW9uJykKYGBgCgoKIyMgQ2hlY2tpbmcgZm9yIGJhdGNoIGVmZmVjdHMKCgpDb2xvciBieSBtZXRhZGF0YSwgbGlrZSBwbGF0ZSBiYXJjb2RlLCB0byBjaGVjayBmb3IgYmF0Y2ggZWZmZWN0cy4KYGBge3J9ClRTTkVQbG90KG9iamVjdCA9IHRpc3MsIGRvLnJldHVybiA9IFRSVUUsIGdyb3VwLmJ5ID0gInBsYXRlLmJhcmNvZGUiKQpgYGAKClByaW50IGEgdGFibGUgc2hvd2luZyB0aGUgY291bnQgb2YgY2VsbHMgaW4gZWFjaCBpZGVudGl0eSBjYXRlZ29yeSBmcm9tIGVhY2ggcGxhdGUuCgpgYGB7cn0KdGFibGUoYXMuY2hhcmFjdGVyKHRpc3NAaWRlbnQpLCBhcy5jaGFyYWN0ZXIodGlzc0BtZXRhLmRhdGEkcGxhdGUuYmFyY29kZSkpCmBgYAoKCldoZW4geW91IHNhdmUgdGhlIGFubm90YXRlZCB0aXNzdWUsIHBsZWFzZSBnaXZlIGl0IGEgbmFtZS4KCmBgYHtyfQpmaWxlbmFtZSA9IGhlcmUoJzAwX2RhdGFfaW5nZXN0JywgJ3Rpc3N1ZV9zZXVyYXRfcm9iaicsIAogICAgICAgICAgICAgICAgICAgICBwYXN0ZTAodGlzc3VlX29mX2ludGVyZXN0LCAiX3NldXJhdF90aXNzLlJvYmoiKSkKcHJpbnQoZmlsZW5hbWUpCnNhdmUodGlzcywgZmlsZT1maWxlbmFtZSkKYGBgCgoKIyBFeHBvcnQgdGhlIGZpbmFsIG1ldGFkYXRhCgpTbyB0aGF0IEJpb2h1YiBjYW4gZWFzaWx5IGNvbWJpbmUgYWxsIHlvdXIgYW5ub3RhdGlvbnMsIHBsZWFzZSBleHBvcnQgdGhlbSBhcyBhIHNpbXBsZSBjc3YuCgpgYGB7cn0KaGVhZCh0aXNzQG1ldGEuZGF0YSkKYGBgCgoKYGBge3J9CmZpbGVuYW1lID0gaGVyZSgnMDBfZGF0YV9pbmdlc3QnLCAndGlzc3VlX2Fubm90YXRpb25fY3N2JywgCiAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCh0aXNzdWVfb2ZfaW50ZXJlc3QsICJfYW5ub3RhdGlvbi5jc3YiKSkKd3JpdGUuY3N2KHRpc3NAbWV0YS5kYXRhWyxjKCdwbGF0ZS5iYXJjb2RlJywnYW5ub3RhdGlvbicsJ2NlbGxfb250b2xvZ3lfaWQnKV0sIGZpbGU9ZmlsZW5hbWUpCmBgYAoKCg==